package day03;

public class OpenDemo {
    public static void main(String[] args) {
        /**
         * 顺序：先做算术、关系、逻辑、赋值、字符串连接、条件
         *         但！（非）高于所有
         * 逻辑：&&、||、！ 逻辑顺序为！>||>&&
         * 算术：+、-、*、/、%、a++、++a
         * 关系：>、<、>=、<=、==、!=
         */

        //算数运算
        /*
        int a = 5, b = 5;
        int c = a++;
        int d = ++b;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);

        int a1 = 5, b1 = 5;
        System.out.println(a++);//被使用，5,a
        System.out.println(a);//被使用，6,已经++，就+1
        System.out.println(++b);//被使用，6,b+1
        System.out.println(b);//被使用，6，已经++，就+1
         */
        /*
        单独使用时，在前在后一样 都+1
        被使用时，在前在后不一样
        a++为a,a--为a
        ++a为a+1，--a为a-1
         */
        /*单独使用
        int a=5，b=5;
        a++;//相当于a=a+1
        ++a；//相当于b=b+1
        System.out.println(a);//6
        System.out.println(b);//6
         */
        /*被使用
        int a=5，b=5;
        int c=a++;//将a++的值5赋值给c，同时a自增1
        int d=++b;//将++b的值6赋值给d，同时d自增1
        System.out.println(c);//5
        System.out.println(d);//6
        System.out.println(a);//6
        System.out.println(b);//6
         */
        /*
        int a2 = 5, b2 = 5;
        int c1 = a2--;//将a--的值5赋值给c，同时a自减1变成4
        int d1 = --b2;//将--a的值4赋值给d，同时b自减1变成4
        System.out.println(a2);//4
        System.out.println(b2);//4
        System.out.println(c1);//5
        System.out.println(d1);//4
         */

       //关系
        /*
        int a=5,b=10,c=5;
        boolean d=a>b;
        System.out.println(d);
        boolean d1=a>=b;
        System.out.println(d1);
        System.out.println(a>=c);//false
        System.out.println(a<=c);//true
        System.out.println(a==c);//true
        System.out.println(a!=c);//true

        System.out.println(a%2==0);//false
        System.out.println(a+c>b);//先运算加减再运算大小 false
        System.out.println(a++>5);//a是5，a++也是5，false，同时a自增1
        System.out.println(a++>5);//a已经自增1了，所以现在a为6，a++也为6，输出true
        System.out.println(a);//此时a为7
         */

        //逻辑：&&（与）、||（或）、！（非）
        /*
        逻辑运算是建立在关系运算的基础之上的
        逻辑运算的结果也是boolean型
        &&（并且）：两边都为真则为真，见false则false
        ||（或者）：有真则真，见true则true
        ！（取反）：非真则假，非假则真
         */
        /*
        int a=5,b=10,c=5;
        boolean b1=b>=a && b<c;
        System.out.println(b1);//true && false=false
        System.out.println(b<=c && b>a);//false && true = false
        System.out.println(a==b && b<a);//false && false = false
        System.out.println(b!=c && b>a);//true && true = true
        */
        /*
        int age = 9;
        //年龄是否在18-50之间
        //age>=18,且age<=50
        //同时满足以上两个条件，为与&&关系
        System.out.println(age>=18&&age<=50);//false，年龄在18-50之间

        int sorce = 86;
        System.out.println(sorce>=0&&sorce<=100);//true，成绩在0-100之间
         */
        /*
        int a=5,b=10,c=5;
        System.out.println(b>=a || b<c);//true||false=true
        System.out.println(b<=a || b>a);//false||true=true
        System.out.println(b!=a || b>a);//true||true=true
        System.out.println(a==b || b<a);//false||false=true

        int score = 98;
        //成绩不合法验证
        System.out.println(score<0 || score>100);//见true则true，成绩合法，false
         */
        /*
        int a=5,b=10,c=5;
        boolean b2=!(a<b);
        System.out.println(b2);//非true=false
        System.out.println(!(a>b));//非false=true
         */
        /**
         * 短路
         * &&遇到false发生短路
         * ||遇到true发生短路
        int a=5,b=10,c=5;
        boolean b3=a>b && c++>2;
        System.out.println(b3);//false
        System.out.println(c);//5，因为走到a>b已经是false了，发生短路，后面的c++>2不执行，所以c还是5
         */


        //赋值运算符
        /*
        int a=5;
        a += 10;//相当于a=(int)(a+10)---a=a+10
        System.out.println(a);//输出15
        a *= 2;//相当于a=（int）（a*2）---a=a*2
        System.out.println(a);//输出30
        a /= 6;//相当于（int）（a/6）----a=a/6
        System.out.println(a);//输出5

        //小面试题：
        short s=5;//整数直接量可以直接赋值
        //s=s+10//编译错误，需强转，改为s=（short）（s+10）;
        s += 10;//相当于（short）（s+10）;

         */

        //字符串连接字符
        /*

         */
        /*
        int age=80;
        System.out.println("age=");
        System.out.println(age);
        System.out.println("age="+age);
        System.out.println("大屌哥今年"+age+"岁了");

        String name = "大屌哥";
        System.out.println("大家好，我叫"+name);
        System.out.println("大家好，我叫"+name+",我今年"+age+"岁了");
         */

        //条件/三目运算符
        /**
         * 1）语法：
         * boolean ？数1：数2
         * 2）执行过程：
         * 整个表达式是有值的，它的值要么是？号后的数1，要么是：号后的数2
         * 计算boolean的值：
         *   若为true，则结果是？后的数1
         *   若为false，则结果是：后的数2
         */
        /*

        //找两个数的最大值
        int a=8,b=55;
        int max = a>b?a:b;
        System.out.println(max);

        int a=8,b=5;
        System.out.println(a>b?(b-a):(a-b));
         */


        /**
         * 1.任何复杂的程序逻辑都可以通过三种结构来实现
         * ①顺序结构：从上往下逐行之行，每句必走
         * ②分支结构：有条件的执行某语句，并非每句必走
         * ③循环结构：
         */

        /*
        分支结构（上）：给予条件执行
        if结构：1条路
        if...else：2条路
        if...else if：多条路
         */
    }
}